//package com.ks.safe.login.faceprint;
//
///**
// * Created by Admin on 2017/10/25 0025 09:05.
// * Author: kang
// * Email: kangsafe@163.com
// */
//
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
//import android.graphics.PixelFormat;
//import android.hardware.Camera;
//import android.util.Log;
//import android.view.SurfaceHolder;
//
//import java.io.IOException;
//import java.util.List;
//
///**
// * Created by Tianchaoxiong on 2017/1/16.
// */
//
//public class CameraInterface {
//    private static final String TAG = "Tianchaoxiong";
//    private Camera mCamera;
//    private Camera.Parameters mParams;
//    private boolean isPreviewing = false;
//    private float mPreviwRate = -1f;
//    private static CameraInterface mCameraInterface;
//
//    public interface CamOpenOverCallback {
//        public void cameraHasOpened();
//    }
//
//    private CameraInterface() {
//
//    }
//
//    public static synchronized CameraInterface getInstance() {
//        if (mCameraInterface == null) {
//            mCameraInterface = new CameraInterface();
//        }
//        return mCameraInterface;
//    }
//
//    /**
//     * 打开Camera
//     *
//     * @param callback
//     */
//    public void doOpenCamera(CamOpenOverCallback callback) {
//        Log.i(TAG, "Camera open....");
//        mCamera = Camera.open(1);
//        Log.i(TAG, "Camera open over....");
//        callback.cameraHasOpened();
//    }
//
//    /**
//     * 开启预览
//     *
//     * @param holder
//     * @param previewRate
//     */
//    public void doStartPreview(SurfaceHolder holder, float previewRate, Camera.PreviewCallback previewCallback) {
//        Log.i(TAG, "doStartPreview...");
//        if (isPreviewing) {
//            mCamera.stopPreview();
//            return;
//        }
//        if (mCamera != null) {
//
//            mParams = mCamera.getParameters();
//            mParams.setPictureFormat(PixelFormat.JPEG);//设置拍照后存储的图片格式
//
//            //对支持的图片的大小的一个收集
//            CamParaUtil.getInstance().printSupportPictureSize(mParams);
//            CamParaUtil.getInstance().printSupportPreviewSize(mParams);
//            //设置PreviewSize和PictureSize
//            Camera.Size pictureSize = CamParaUtil.getInstance().getPropPictureSize(
//                    mParams.getSupportedPictureSizes(), previewRate, 800);
//            mParams.setPictureSize(pictureSize.width, pictureSize.height);
//            Camera.Size previewSize = CamParaUtil.getInstance().getPropPreviewSize(
//                    mParams.getSupportedPreviewSizes(), previewRate, 800);
//            mParams.setPreviewSize(previewSize.width, previewSize.height);
//
//            mCamera.setDisplayOrientation(90);
//
//            CamParaUtil.getInstance().printSupportFocusMode(mParams);
//            List<String> focusModes = mParams.getSupportedFocusModes();
//            if (focusModes.contains("continuous-video")) {
//                mParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
//            }
//            mCamera.setParameters(mParams);  //参数设置完毕
//
//            try {
//                mCamera.setPreviewDisplay(holder);
//                mCamera.setPreviewCallback(previewCallback);
//                mCamera.startPreview();//开启预览
//            } catch (IOException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            }
//
//            isPreviewing = true;
//            mPreviwRate = previewRate;
//
//            mParams = mCamera.getParameters(); //重新get一次
//            Log.i(TAG, "最终设置:PreviewSize--With = " + mParams.getPreviewSize().width
//                    + "Height = " + mParams.getPreviewSize().height);
//            Log.i(TAG, "最终设置:PictureSize--With = " + mParams.getPictureSize().width
//                    + "Height = " + mParams.getPictureSize().height);
//        }
//    }
//
//    /**
//     * 停止预览，释放Camera
//     */
//    public void doStopCamera() {
//        if (null != mCamera) {
//            mCamera.setPreviewCallback(null);
//            mCamera.stopPreview();
//            isPreviewing = false;
//            mPreviwRate = -1f;
//            mCamera.release();
//            mCamera = null;
//        }
//    }
//
//    /**
//     * 拍照
//     */
//    public void doTakePicture() {
//        if (isPreviewing && (mCamera != null)) {
//            Log.d("FileUtils", "程序运行到这里了111");
//            mCamera.takePicture(mShutterCallback, null, mJpegPictureCallback);
//        }
//    }
//
//    /*为了实现拍照的快门声音及拍照保存照片需要下面三个回调变量*/
//    Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback()
//            //快门按下的回调，在这里我们可以设置类似播放“咔嚓”声之类的操作。默认的就是咔嚓。
//    {
//        public void onShutter() {
//            // TODO Auto-generated method stub
//            Log.i(TAG, "myShutterCallback:onShutter...");
//        }
//    };
//    /*  Camera.PictureCallback mRawCallback = new Camera.PictureCallback()
//          // 拍摄的未压缩原数据的回调,可以为null
//      {
//
//        public void onPictureTaken(byte[] data, Camera camera) {
//          // TODO Auto-generated method stub
//          Log.i(TAG, "myRawCallback:onPictureTaken...");
//
//        }
//      };*/
//    Camera.PictureCallback mJpegPictureCallback = new Camera.PictureCallback()
//            //对jpeg图像数据的回调,最重要的一个回调
//    {
//        public void onPictureTaken(byte[] data, Camera camera) {
//            Log.d("FileUtils", "程序运行到这里了222");
//            // TODO Auto-generated method stub
//            Log.i(TAG, "myJpegCallback:onPictureTaken...");
//            Bitmap b = null;
//            if (null != data) {
//                b = BitmapFactory.decodeByteArray(data, 0, data.length);//data是字节数据，将其解析成位图
//                mCamera.stopPreview();
//                isPreviewing = false;
//                Log.d("FileUtils", "程序运行到这里了333");
//            }
//            //保存图片到sdcard
//            if (null != b) {
//                Log.d("FileUtils", "程序运行到这里了444");
//                //设置FOCUS_MODE_CONTINUOUS_VIDEO)之后，myParam.set("rotation", 90)失效。
//                //图片竟然不能旋转了，故这里要旋转下
//                Log.d("FileUtils", "程序运行到这里了");
//                Bitmap rotaBitmap = ImageUtil.getRotateBitmap(b, -90.0f);
//                FileUtils.savePaiZhaoBitmap(rotaBitmap);
//            }
//        }
//    };
//
//}
